function calculatedGrossProfit3(costList, retailList, muProfit, profitMap, isPFSFlag) {
    if (!isNull(costList) && !isNull(retailList)) {
        //毛利集合
        var profitList = [];
        for (var i = 0; i < costList.length; i++) {
            var cost = costList[i];
            if (cost.expDate !== '2049-12-31') {
                cost.expDate = dateAddOrReduceDays(cost.expDate, 1, true);
            }
            for (var nv = 0; nv < retailList.length; nv++) {
                var retail = retailList[nv];
                if (isNull(retail.change) && !isPFSFlag) {
                    retail.effDate = dateAddOrReduceDays(retail.effDate, 1, false);
                    retail.change = true;
                } else if (isNull(retail.change) && isPFSFlag) {
                    retail.effDate = dateAddOrReduceDays(retail.effDate, 2, false);
                    retail.change = true;
                }

                // var b = isDateIntersection(cost.effDate, cost.expDate,retail.effDate, retail.expDate);
                var s = isDateIntersection_Min(retail.effDate, retail.expDate, cost.effDate, cost.expDate);
                var o = overlaps(cost.effDate, cost.expDate, retail.effDate, retail.expDate);
                // var o1 = overlaps(retail.effDate, retail.expDate,cost.effDate, cost.expDate);
                if (o || s) {
                    console.log("成本:" + cost.effDate + "==>" + cost.expDate + "/" + cost.cost);
                    console.log("Trait:" + retail.priceTrait + ",新/旧:" + retail.type + ":,类型:" + retail.priceType + ",零售:" + retail.effDate + "==>" + retail.expDate + "/" + retail.retail);
                    //1-((成本*税率)/(零售*箱包))
                    var number = 1 - ((cost.cost * cost.rate) / (retail.retail * cost.size));
                    var profit = number.toFixed(4);
                    console.log("计算后的毛利:" + profit);
                    var profitObj = {
                        cost: cost.cost,
                        retail: retail.retail,
                        retailType: retail.priceType,
                        profit: profit,
                        rate: cost.rate,
                        size: cost.size
                    }
                    profitList.push(profitObj);
                    if (retail.priceTrait != null && retail.priceTrait === 45) {
                        muProfit.push(profit);
                    }
                    var mapKey = "cost:" + cost.cost + ",retail:" + retail.retail;
                    if (profitMap != null && !profitMap.containsKey(mapKey)) {
                        profitMap.put(mapKey, profit);
                    }
                }
            }

        }
        return profitList;
    } else {
        return [];
    }

}
